﻿using System;

namespace memo
{
    /// <summary>
    /// DataAccessorFactory:
    /// Factory osztály a DataAccessor és a MockDataAccessor példányosításához.
    /// </summary>
    public static class DataAccessorFactory
    {
        /// <summary>
        /// A DataAccessorTestMode környezeti változó értékétől függően visszad egy DataAccessor vagy MockDataAccessor osztályt.
        /// </summary>
        /// <returns>IDataAccessor</returns>
        /// <exception cref="memo.MemoDataAccessorException">Exception for any exception that could occur.</exception>
        public static IDataAccessor Get()
        {
            try
            {
                string myEnviromentVariable = Environment.GetEnvironmentVariable("DataAccessorTestMode");

                //Ha nem létezik a környezeti változó akkor létrehoz egyet.
                if (string.IsNullOrWhiteSpace(myEnviromentVariable))
                {
                    Environment.SetEnvironmentVariable("DataAccessorTestMode", "False");
                    myEnviromentVariable = Environment.GetEnvironmentVariable("DataAccessorTestMode");
                }

                if (myEnviromentVariable.Equals("True"))
                {
                    return new MockDataAccessor();
                }
                else
                {
                    return new DataAccessor();
                }
            }
            catch (Exception e)
            {
                throw new MemoDataAccessorException("#Exception", e);
            }

        }
    }
}
